﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Security.Principal;
using App_Negocio;

public partial class ConfirmarReunion : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            IPrincipal p = HttpContext.Current.User;
            if (!p.IsInRole("Empleado"))
            {
                Session["Mensaje"] = "Usted no posee los permisos necesarios para ingresar a esta pagina";

                if (Session["Identificador"] != null)
                {
                    Session["IrAPagina"] = "Principal_Clientes.aspx";
                    Response.Redirect("Bienvenida.aspx");
                }
                else
                {
                    Response.Redirect("login.aspx");
                }
            }
            else
            {
                actualizarPagina();

            }
        }
    }

    private void actualizarPagina()
    {
        bool hayReunion = listarReunion();
      
    }

    private App_Negocio.Reunion seleccionado;

    public App_Negocio.Reunion Seleccionado
    {
        get { return seleccionado; }
        set { seleccionado = value; }
    }
    
    protected bool listarReunion()
    {
        //ademas de lo que esta trayendo tendria que traer el precio real y precio estimado
        App_Negocio.Reunion reunion = new App_Negocio.Reunion();
        DataTable dt = reunion.listarReunionesPendientes();
        DataView dv = dt.DefaultView;
        gvReunionesPendientes.DataSource = dv;            //   Nro  Fecha Apellido  Motivo  idPresupuesto idEvento estado Observaciones "
        gvReunionesPendientes.DataKeyNames = new string[] { "Nro", "Apellido", "Motivo", "Fecha", "Observaciones", "Mail", "Hora", "PresupuestoId", "EventoId", "Nombre" };
        gvReunionesPendientes.DataBind();
        bool hayFilas = false;
        if (dt.Rows.Count > 0)
        {
            hayFilas = true;
        }

        return hayFilas;
    }

    protected void gvReunionesPendientes_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {

        gvReunionesPendientes.SelectedIndex = e.NewSelectedIndex;
        Seleccionado = new App_Negocio.Reunion();


        Seleccionado.Id = int.Parse(string.Format(gvReunionesPendientes.SelectedDataKey.Values["Nro"].ToString()));
        

     
        lblNombre.Text = string.Format(gvReunionesPendientes.SelectedDataKey.Values["Nombre"].ToString());
        lblApellido.Text = string.Format(gvReunionesPendientes.SelectedDataKey.Values["Apellido"].ToString());
        lblFecha.Text = DateTime.Parse(string.Format(gvReunionesPendientes.SelectedDataKey.Values["Fecha"].ToString())).ToShortDateString();
       
        if(gvReunionesPendientes.SelectedDataKey.Values["EventoId"]==null){
        lblMotivo.Text = string.Format(gvReunionesPendientes.SelectedDataKey.Values["Motivo"].ToString()) + " Evento " ;//PONER UNA FECHA
            }else{
        lblMotivo.Text = string.Format(gvReunionesPendientes.SelectedDataKey.Values["Motivo"].ToString()) + " Presupuesto " ;//PONER UNA FECHA
            
            }

        lblObservacionCliente.Text = string.Format(gvReunionesPendientes.SelectedDataKey.Values["Observaciones"].ToString()); 
        //tbxObservacion.Text = string.Format(gvReunionesPendientes.SelectedDataKey.Values["Observaciones"].ToString());
        
        lblHora.Text = string.Format(gvReunionesPendientes.SelectedDataKey.Values["Hora"].ToString());
    }

    protected void gvReunionesPendientes_Sorting(object sender, GridViewSortEventArgs e)
    {
        DataView dv = ((DataView)Session["dvReunion"]);
        dv.Sort = e.SortExpression;
        gvReunionesPendientes.DataSource = dv;
        gvReunionesPendientes.PageIndex = 0;
        gvReunionesPendientes.DataBind();
    }

    protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
    {

    }
    
    protected void addToAgenda(App_Negocio.Reunion reun)
    {

        App_Negocio.Agenda agenda = new App_Negocio.Agenda();
        App_Negocio.Reunion reu = new App_Negocio.Reunion();
        reu.Id= reun.Id;
        reu.Fecha = reun.Fecha;
        agenda.Descripcion = reun.Cliente.NomCliente + ", " + reun.Cliente.ApeCliente + ", " + reun.ReunionTipo.Nombre;
        agenda.Reunion = reu;
        agenda.guardarAgenda();
    }

    protected void btnSalir_Click(object sender, EventArgs e)
    {


    }

    protected void btnConfirmarCancelacion_Click(object sender, EventArgs e)
    {
        // pasar el estado de la reunion a 4 y mandar el mail al cliente para que solicite otra reunion
    
        string motivo = "La reunion ha sido rechazada por el siguien motivo: /n" + tbxMotivoCancel.Text + "/n Disculpe las molestias, lo invitamos a solicitar otra reunión";
        string accion = "cancelar";

        App_Negocio.Reunion seleccionado = new App_Negocio.Reunion();
        seleccionado.Id = int.Parse(string.Format(gvReunionesPendientes.SelectedDataKey.Values["Nro"].ToString()));
        seleccionado.confirmarCancelarReunion(accion);


        App_Negocio.Cliente cli = new App_Negocio.Cliente();
        cli.Email = string.Format(gvReunionesPendientes.SelectedDataKey.Values["Mail"].ToString());

        seleccionado.Cliente = cli;


        string urlLogo = Server.MapPath("Imagenes/logo.jpg");
        try
        {
            seleccionado.enviarMail(urlLogo, motivo);
        }
        catch (SystemException ex)
        {

            Session["Mensaje"] = "este es el q muestra? " + ex.Message;
            Session["IrAPagina"] = "inicio_web_flash.aspx";
            Response.Redirect("Bienvenida.aspx");
        }
        Panel3_ModalPopupExtender.Hide();
        // para quie lista las reuniones de vuelta si se va a la pag de empleados????
        this.listarReunion();
        
        Response.Redirect("Principal_Empleados.aspx");

    }

    protected void btnConfirmarReunion_Click(object sender, EventArgs e)
    {
        string accion = "confirmar";

        App_Negocio.Reunion seleccionado = new App_Negocio.Reunion();
        seleccionado.Id = int.Parse(string.Format(gvReunionesPendientes.SelectedDataKey.Values["Nro"].ToString()));
        seleccionado.Fecha = DateTime.Parse(string.Format(gvReunionesPendientes.SelectedDataKey.Values["Fecha"].ToString()));

        seleccionado.confirmarCancelarReunion(accion);

        App_Negocio.Cliente cli = new App_Negocio.Cliente();
        cli.Email = string.Format(gvReunionesPendientes.SelectedDataKey.Values["Mail"].ToString());
        cli.ApeCliente = string.Format(gvReunionesPendientes.SelectedDataKey.Values["Apellido"].ToString());
        cli.NomCliente = string.Format(gvReunionesPendientes.SelectedDataKey.Values["Nombre"].ToString());

        App_Negocio.Reunion_Tipo rt = new App_Negocio.Reunion_Tipo();
        rt.Nombre = string.Format(gvReunionesPendientes.SelectedDataKey.Values["Motivo"].ToString());

        seleccionado.ReunionTipo = rt;
        seleccionado.Cliente = cli;

        string mensaje = "La reunión solicitada para el día " + seleccionado.Fecha.ToShortDateString() + " a la/s " + lblHora.Text + " ha sido confirmada. Lo esperamos.";
        string urlLogo = Server.MapPath("Imagenes/logo.jpg");

        try
        {
            seleccionado.enviarMail(urlLogo,mensaje);
        }
        catch (SystemException ex)
        {

        }
        this.listarReunion();

        // ver aca porque no se puede mandar el mail y despues agregar todo.
        this.addToAgenda(seleccionado);
        App_Negocio.Reunion reu = new Reunion();
        reu.Id = seleccionado.Id;
        reu.Observaciones = lblObservacionCliente.Text; // ESTA AL PEDO PORQUE NO SE MNODIFICA
        reu.RespuestaEmpresa = txtRespuestaEmpresa.Text;
        reu.ObservacionEjecucion = "";
        reu.ReunionEstado = new Reunion_Estado();
        reu.ReunionEstado.Numero = 2;

        reu.actualizarReunion();

        Response.Redirect("Principal_Empleados.aspx");
    }

       
    protected void btnSalir1_Click(object sender, EventArgs e)
    {
        Response.Redirect("Principal_Empleados.aspx");
    }
}
